package com.woniuxy.mapper;

import com.woniuxy.entity.DTO.AddOrderParamDTO;
import com.woniuxy.entity.DTO.AddressDTO;
import com.woniuxy.entity.DTO.DeleteBatchShoppingCartGoodsDTO;
import com.woniuxy.entity.DTO.QueryShoppingCartGoodsDTO;
import com.woniuxy.entity.Goods;
import com.woniuxy.entity.ShoppingCarts;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author Honey
* @description 针对表【shopping_carts】的数据库操作Mapper
* @createDate 2025-05-19 14:16:39
* @Entity com.woniuxy.entity.ShoppingCarts
*/
public interface ShoppingCartsMapper {
    /**
     * 更具订单id添加购物车
     */
    void addShoppingCart(List<ShoppingCarts> shoppingCarts);
    /**
     * 根据商品id加入购物车
     */
    void addShoppingCartByProductId(ShoppingCarts shoppingCarts);

    /**
     * <p>根据用户 ID 查询购物车信息。</p>
     *
     * @param userId 用户 ID
     * @return 购物车信息列表
     */
    List<QueryShoppingCartGoodsDTO> selectShoppingCartByUserId(Integer userId);

    /**
     * <p>批量删除用户选中的购物车商品。</p>
     *
     * @param deleteBatchShoppingCartGoodsDTOs 用户选中的购物车商品
     */
    void deleteBatchShoppingCartGoods(List<DeleteBatchShoppingCartGoodsDTO> deleteBatchShoppingCartGoodsDTOs);

    /**
     * <p>修改购物车商品选中状态。</p>
     * @param addOrderParamDTOs 被选中的商品
     */
    void updateSelected(List<AddOrderParamDTO> addOrderParamDTOs);

    void insertShoppingCartForCommonGoods(@Param("goodsId") Integer goodsId, @Param("userId") Integer userId);

    /**
     * <p>查询用户默认收货地址</p>
     * @param userId
     * @return
     */
    AddressDTO selectDefaultAddressByUserId(Integer userId);

    /**
     * <p>根据用户ID和商品ID查询购物车ID</p>
     * @param userId
     * @param goodsId
     * @return
     */
    Integer selectCartIdByUserIdAndGoodsId(@Param("userId") Integer userId, @Param("goodsId") Integer goodsId);

    /**
     * <p>根据购物车ID、商品ID、用户ID更新购物车商品信息</p>
     * @param cartId
     * @param goodsId
     * @param userId
     */
    void updateShoppingCartForCommonGoods(@Param("cartId") Integer cartId,
                                          @Param("goodsId") Integer goodsId,
                                          @Param("userId") Integer userId);
    /**
     * 查找订单根据id
     */

}
